made fil mode GDK_STIPPLED actually work -> check boxes and radio buttons
authorHans Breuer <hans@breuer.org>
Fri, 25 May 2001 15:43:53 +0000 (15:43 +0000)
committerHans Breuer <hans@src.gnome.org>
Fri, 25 May 2001 15:43:53 +0000 (15:43 +0000)
2001-05-25  Hans Breuer  <hans@breuer.org>

* gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
work -> check boxes and radio buttons are drawn now, even on win9x.
Improved line settings a bit, still no clue how to get really dotted
lines on win9x, on NT it's PS_ALTERNATE.

* gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for
GDK_HINT_MIN_SIZE as well

* gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST

* gtk/gtk.def : updated

* gtk/gtktreeprivate.h : change column_drop_func to be a function
pointer not a function pointer pointer

* tests/testdnd.c : include <stdlib.h> for putenv prototype

* tests/testsocket.c : made it compile on win32 again

* tests/makefile.msc : one more test-app uses prop-editor.obj

15 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/win32/Makefile.am
gdk/win32/gdkgc-win32.c
gdk/win32/gdkwindow-win32.c
gtk/gtk.def
gtk/gtktreeprivate.h
tests/makefile.msc
tests/testdnd.c
tests/testsocket.c

index be86db83dae8fd3c012b222a6e189c74b2e865a7..95f96d091d0558ddf9b611fb6e0cc3e54475d23a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2001-05-25  Hans Breuer  <hans@breuer.org>
+
+       * gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
+       work -> check boxes and radio buttons are drawn now, even on win9x.
+       Improved line settings a bit, still no clue how to get really dotted
+       lines on win9x, on NT it's PS_ALTERNATE.
+
+       * gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for 
+       GDK_HINT_MIN_SIZE as well
+
+       * gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST
+
+       * gtk/gtk.def : updated
+
+       * gtk/gtktreeprivate.h : change column_drop_func to be a function
+       pointer not a function pointer pointer
+
+       * tests/testdnd.c : include <stdlib.h> for putenv prototype
+
+       * tests/testsocket.c : made it compile on win32 again
+
+       * tests/makefile.msc : one more test-app uses prop-editor.obj
+
 2001-05-22  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtkbin.c (gtk_bin_get_child): New function
index be86db83dae8fd3c012b222a6e189c74b2e865a7..95f96d091d0558ddf9b611fb6e0cc3e54475d23a 100644 (file)
@@ -1,3 +1,26 @@
+2001-05-25  Hans Breuer  <hans@breuer.org>
+
+       * gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
+       work -> check boxes and radio buttons are drawn now, even on win9x.
+       Improved line settings a bit, still no clue how to get really dotted
+       lines on win9x, on NT it's PS_ALTERNATE.
+
+       * gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for 
+       GDK_HINT_MIN_SIZE as well
+
+       * gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST
+
+       * gtk/gtk.def : updated
+
+       * gtk/gtktreeprivate.h : change column_drop_func to be a function
+       pointer not a function pointer pointer
+
+       * tests/testdnd.c : include <stdlib.h> for putenv prototype
+
+       * tests/testsocket.c : made it compile on win32 again
+
+       * tests/makefile.msc : one more test-app uses prop-editor.obj
+
 2001-05-22  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtkbin.c (gtk_bin_get_child): New function
index be86db83dae8fd3c012b222a6e189c74b2e865a7..95f96d091d0558ddf9b611fb6e0cc3e54475d23a 100644 (file)
@@ -1,3 +1,26 @@
+2001-05-25  Hans Breuer  <hans@breuer.org>
+
+       * gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
+       work -> check boxes and radio buttons are drawn now, even on win9x.
+       Improved line settings a bit, still no clue how to get really dotted
+       lines on win9x, on NT it's PS_ALTERNATE.
+
+       * gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for 
+       GDK_HINT_MIN_SIZE as well
+
+       * gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST
+
+       * gtk/gtk.def : updated
+
+       * gtk/gtktreeprivate.h : change column_drop_func to be a function
+       pointer not a function pointer pointer
+
+       * tests/testdnd.c : include <stdlib.h> for putenv prototype
+
+       * tests/testsocket.c : made it compile on win32 again
+
+       * tests/makefile.msc : one more test-app uses prop-editor.obj
+
 2001-05-22  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtkbin.c (gtk_bin_get_child): New function
index be86db83dae8fd3c012b222a6e189c74b2e865a7..95f96d091d0558ddf9b611fb6e0cc3e54475d23a 100644 (file)
@@ -1,3 +1,26 @@
+2001-05-25  Hans Breuer  <hans@breuer.org>
+
+       * gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
+       work -> check boxes and radio buttons are drawn now, even on win9x.
+       Improved line settings a bit, still no clue how to get really dotted
+       lines on win9x, on NT it's PS_ALTERNATE.
+
+       * gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for 
+       GDK_HINT_MIN_SIZE as well
+
+       * gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST
+
+       * gtk/gtk.def : updated
+
+       * gtk/gtktreeprivate.h : change column_drop_func to be a function
+       pointer not a function pointer pointer
+
+       * tests/testdnd.c : include <stdlib.h> for putenv prototype
+
+       * tests/testsocket.c : made it compile on win32 again
+
+       * tests/makefile.msc : one more test-app uses prop-editor.obj
+
 2001-05-22  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtkbin.c (gtk_bin_get_child): New function
index be86db83dae8fd3c012b222a6e189c74b2e865a7..95f96d091d0558ddf9b611fb6e0cc3e54475d23a 100644 (file)
@@ -1,3 +1,26 @@
+2001-05-25  Hans Breuer  <hans@breuer.org>
+
+       * gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
+       work -> check boxes and radio buttons are drawn now, even on win9x.
+       Improved line settings a bit, still no clue how to get really dotted
+       lines on win9x, on NT it's PS_ALTERNATE.
+
+       * gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for 
+       GDK_HINT_MIN_SIZE as well
+
+       * gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST
+
+       * gtk/gtk.def : updated
+
+       * gtk/gtktreeprivate.h : change column_drop_func to be a function
+       pointer not a function pointer pointer
+
+       * tests/testdnd.c : include <stdlib.h> for putenv prototype
+
+       * tests/testsocket.c : made it compile on win32 again
+
+       * tests/makefile.msc : one more test-app uses prop-editor.obj
+
 2001-05-22  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtkbin.c (gtk_bin_get_child): New function
index be86db83dae8fd3c012b222a6e189c74b2e865a7..95f96d091d0558ddf9b611fb6e0cc3e54475d23a 100644 (file)
@@ -1,3 +1,26 @@
+2001-05-25  Hans Breuer  <hans@breuer.org>
+
+       * gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
+       work -> check boxes and radio buttons are drawn now, even on win9x.
+       Improved line settings a bit, still no clue how to get really dotted
+       lines on win9x, on NT it's PS_ALTERNATE.
+
+       * gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for 
+       GDK_HINT_MIN_SIZE as well
+
+       * gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST
+
+       * gtk/gtk.def : updated
+
+       * gtk/gtktreeprivate.h : change column_drop_func to be a function
+       pointer not a function pointer pointer
+
+       * tests/testdnd.c : include <stdlib.h> for putenv prototype
+
+       * tests/testsocket.c : made it compile on win32 again
+
+       * tests/makefile.msc : one more test-app uses prop-editor.obj
+
 2001-05-22  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtkbin.c (gtk_bin_get_child): New function
index be86db83dae8fd3c012b222a6e189c74b2e865a7..95f96d091d0558ddf9b611fb6e0cc3e54475d23a 100644 (file)
@@ -1,3 +1,26 @@
+2001-05-25  Hans Breuer  <hans@breuer.org>
+
+       * gdk/win32/gdkgc-win32.c : made fil mode GDK_STIPPLED actually
+       work -> check boxes and radio buttons are drawn now, even on win9x.
+       Improved line settings a bit, still no clue how to get really dotted
+       lines on win9x, on NT it's PS_ALTERNATE.
+
+       * gdk/win32/gdkwindow-win32.c : use SafeAdjustWindowRect for 
+       GDK_HINT_MIN_SIZE as well
+
+       * gdk/win32/makefile.am : added gdkkeys-win32.c to EXTRA_DIST
+
+       * gtk/gtk.def : updated
+
+       * gtk/gtktreeprivate.h : change column_drop_func to be a function
+       pointer not a function pointer pointer
+
+       * tests/testdnd.c : include <stdlib.h> for putenv prototype
+
+       * tests/testsocket.c : made it compile on win32 again
+
+       * tests/makefile.msc : one more test-app uses prop-editor.obj
+
 2001-05-22  Havoc Pennington  <hp@pobox.com>
 
        * gtk/gtkbin.c (gtk_bin_get_child): New function
index 4a83e22d3c372e58bef403cf7b255444e6830273..fe7106388fa5a54e1d5f31804fe2f242fe2feedc 100644 (file)
@@ -20,6 +20,7 @@ EXTRA_DIST = \
        gdkinput.c \
        gdkinput-win32.c \
        gdkinput-win32.h \
+       gdkkeys-win32.c \
        gdkmain-win32.c \
        gdkpango-win32.c \
        gdkpixmap-win32.c \
index 417f9d254bbad9e3999222653c10f059d601028b..e08673da8db31f812963c87536c878802a3b4e82 100644 (file)
@@ -277,7 +277,12 @@ gdk_win32_gc_values_to_win32values (GdkGCValues    *values,
        {
          gdk_drawable_get_size (win32_gc->stipple, &sw, &sh);
 
-         if (sw != 8 || sh != 8)
+#if 0 /* HB: this size limitation is disabled to make radio and check
+       * buttons work. I got the impression from the API docs, that
+       * it shouldn't be necessary at all, but win9x would do the clipping
+       */
+         if (   (sw != 8 || sh != 8)
+             && !IS_WIN_NT ()) /* HB: the MSDN says it's a Win95 limitation */
            {
              /* It seems that it *must* be 8x8, at least on my machine. 
               * Thus, tile an 8x8 bitmap with the stipple in case it is
@@ -304,6 +309,7 @@ gdk_win32_gc_values_to_win32values (GdkGCValues    *values,
              gdk_gc_unref (gc);
            }
          else
+#endif
            gdk_drawable_ref (win32_gc->stipple);
          win32_gc->values_mask |= GDK_GC_STIPPLE;
          GDK_NOTE (MISC,
@@ -402,19 +408,26 @@ gdk_win32_gc_values_to_win32values (GdkGCValues    *values,
 
   if (mask & GDK_GC_LINE_STYLE)
     {
-      win32_gc->pen_style &= ~(PS_STYLE_MASK);
       GDK_NOTE (MISC, (g_print ("%sps|=", s),
                       s = ","));
       switch (values->line_style)
        {
        case GDK_LINE_SOLID:
+        win32_gc->pen_style &= ~(PS_STYLE_MASK);
          GDK_NOTE (MISC, g_print ("LINE_SOLID"));
          win32_gc->pen_style |= PS_SOLID;
          break;
        case GDK_LINE_ON_OFF_DASH:
        case GDK_LINE_DOUBLE_DASH: /* ??? */
-         GDK_NOTE (MISC, g_print ("DASH"));
-         win32_gc->pen_style |= PS_DASH;
+         /* only set the linestyle here, if it isn't already set
+          * gdk_win32_gc_set_dashes () knows better
+          */
+         if (0 == (win32_gc->values_mask & GDK_GC_LINE_STYLE))
+           {
+            win32_gc->pen_style &= ~(PS_STYLE_MASK);
+             GDK_NOTE (MISC, g_print ("DASH"));
+             win32_gc->pen_style |= PS_DASH;
+           }
          break;
        }
       win32_gc->values_mask |= GDK_GC_LINE_STYLE;
@@ -625,8 +638,10 @@ gdk_win32_gc_set_dashes (GdkGC *gc,
 
   win32_gc = GDK_GC_WIN32 (gc);
 
+  /* mark as set, see gdk_win32_gc_values_to_win32values () for the reason */
+  win32_gc->values_mask |= GDK_GC_LINE_STYLE;
+
   win32_gc->pen_style &= ~(PS_STYLE_MASK);
-  win32_gc->pen_style |= PS_DASH;
 
   /* 
    * Set the extended line style. This could be done by 
@@ -910,6 +925,7 @@ predraw_set_foreground (GdkGC       *gc,
 
   logbrush.lbStyle = BS_SOLID;
   logbrush.lbColor = fg;
+  logbrush.lbHatch = 0;
 
   if (*ok && (hpen = ExtCreatePen (win32_gc->pen_style,
                                   (win32_gc->pen_width > 0 ? win32_gc->pen_width : 1),
@@ -924,12 +940,11 @@ predraw_set_foreground (GdkGC       *gc,
     case GDK_OPAQUE_STIPPLED:
       if (*ok && (hbr = CreatePatternBrush (GDK_PIXMAP_HBITMAP (win32_gc->stipple))) == NULL)
        WIN32_GDI_FAILED ("CreatePatternBrush"), *ok = FALSE;
-       
       if (*ok && !SetBrushOrgEx(win32_gc->hdc, gc->ts_x_origin,
                                gc->ts_y_origin, NULL))
        WIN32_GDI_FAILED ("SetBrushOrgEx"), *ok = FALSE;
+       
       break;
-
     case GDK_SOLID:
     default:
       if (*ok && (hbr = CreateSolidBrush (fg)) == NULL)
@@ -1076,6 +1091,25 @@ gdk_win32_hdc_get (GdkDrawable    *drawable,
       if ((hrgn = ExtCreateRegion (NULL, nbytes, rgndata)) == NULL)
        WIN32_API_FAILED ("ExtCreateRegion"), ok = FALSE;
 
+      /*
+       * XXX: combine the fillmode-stipple with the clip region possibly 
+       *  this needs to be done with the hcliprgn below as well, but 
+       *  the test case here were check boxes and radio buttons ...
+       */
+      if (   (win32_gc->values_mask & GDK_GC_STIPPLE)
+          && (win32_gc->values_mask & GDK_GC_FILL) && (win32_gc->fill_style == GDK_STIPPLED))
+        {
+          HRGN hstipplergn = BitmapToRegion ((HBITMAP) GDK_PIXMAP_HBITMAP (win32_gc->stipple));
+
+          if (OffsetRgn (hstipplergn, 
+             win32_gc->values_mask & GDK_GC_TS_X_ORIGIN ? gc->ts_x_origin : 0,
+             win32_gc->values_mask & GDK_GC_TS_Y_ORIGIN ? gc->ts_y_origin : 0) == ERROR)
+            WIN32_API_FAILED ("OffsetRgn"), ok = FALSE;
+          if (CombineRgn (hrgn, hrgn, hstipplergn, RGN_AND) == ERROR)
+            WIN32_API_FAILED ("CombineRgn"), ok = FALSE;
+          if (!DeleteObject (hstipplergn))
+            WIN32_API_FAILED ("DeleteObject");
+        }
       if (ok && SelectClipRgn (win32_gc->hdc, hrgn) == ERROR)
        WIN32_API_FAILED ("SelectClipRgn"), ok = FALSE;
 
@@ -1119,8 +1153,10 @@ gdk_win32_hdc_get (GdkDrawable    *drawable,
                PS_GEOMETRIC ? "GEOMETRIC" : "COSMETIC"),
               ((extlogpen.elpPenStyle & PS_STYLE_MASK) ==
                PS_NULL ? "NULL" :
-               ((extlogpen.elpPenStyle & PS_STYLE_MASK) ==
-                PS_SOLID ? "SOLID" : "???")),
+               ((extlogpen.elpPenStyle & PS_STYLE_MASK) == PS_SOLID ? "SOLID" :
+                ((extlogpen.elpPenStyle & PS_STYLE_MASK) == PS_DOT ? "DOT" :
+                 ((extlogpen.elpPenStyle & PS_STYLE_MASK) == PS_DASH ? "DASH" :
+                  "???")))),
               ((extlogpen.elpPenStyle & PS_ENDCAP_MASK) ==
                PS_ENDCAP_FLAT ? "FLAT" :
                ((extlogpen.elpPenStyle & PS_ENDCAP_MASK) ==
index 3a5ac37b6d8b8f99fe64dd688aea7f43eec0e278..449418cd5a7ed1c1c054bdad19b397a6d03f184d 100644 (file)
@@ -1267,7 +1267,7 @@ gdk_window_set_hints (GdkWindow *window,
          rect.bottom = min_height;
          dwStyle = GetWindowLong (GDK_WINDOW_HWND (window), GWL_STYLE);
          dwExStyle = GetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE);
-         AdjustWindowRectEx (&rect, dwStyle, FALSE, dwExStyle);
+         SafeAdjustWindowRectEx (&rect, dwStyle, FALSE, dwExStyle);
          impl->hint_min_width = rect.right - rect.left;
          impl->hint_min_height = rect.bottom - rect.top;
 
index f474d5319db627f068d516259576303775c52306..2de5cf7f91d7b47194964fd6403bf02205a2266b 100755 (executable)
@@ -135,6 +135,7 @@ EXPORTS
        gtk_aspect_frame_get_type
        gtk_aspect_frame_new
        gtk_aspect_frame_set
+       gtk_bin_get_child
        gtk_bin_get_type
        gtk_binary_age
        gtk_binding_entry_add_signal
@@ -597,7 +598,7 @@ EXPORTS
        gtk_image_get_stock
        gtk_image_get_storage_type
        gtk_image_get_type
-       gtk_image_menu_item_add_image
+;      gtk_image_menu_item_add_image
        gtk_image_menu_item_get_image
        gtk_image_menu_item_get_type
        gtk_image_menu_item_new
@@ -1257,7 +1258,7 @@ EXPORTS
        gtk_text_iter_has_tag
        gtk_text_iter_in_range
        gtk_text_iter_is_end
-       gtk_text_iter_is_first
+;      gtk_text_iter_is_first
        gtk_text_iter_reorder
        gtk_text_iter_set_line
        gtk_text_iter_set_line_index
@@ -1428,6 +1429,7 @@ EXPORTS
        gtk_tree_model_iter_parent
        gtk_tree_model_range_changed
        gtk_tree_model_ref_node
+       gtk_tree_model_reordered
        gtk_tree_model_sort_convert_path
        gtk_tree_model_sort_get_model
        gtk_tree_model_sort_get_type
@@ -1443,6 +1445,7 @@ EXPORTS
        gtk_tree_path_new
        gtk_tree_path_new_from_string
        gtk_tree_path_prepend_index
+       gtk_tree_view_get_columns
        gtk_tree_view_set_rows_drag_dest
        gtk_tree_view_set_rows_drag_source
        gtk_tree_prepend
@@ -1740,4 +1743,10 @@ EXPORTS
        gtk_window_unmaximize
        gtk_window_unstick
 
+       gtk_image_menu_item_new_with_label
+       gtk_image_menu_item_set_image
+       gtk_size_group_add_widget
+       gtk_size_group_new
+       gtk_text_buffer_remove_all_tags
+       gtk_tree_view_column_set_reorderable
 
index 7d6be42a22201ba97110ca13d2dec8772b901467..643f16b238ba5033b6c8ae426222cb4541b7baf9 100644 (file)
@@ -129,7 +129,7 @@ struct _GtkTreeViewPrivate
   GList *columns;
   gint header_height;
 
-  GtkTreeViewColumnDropFunc *column_drop_func;
+  GtkTreeViewColumnDropFunc column_drop_func;
   gpointer column_drop_func_data;
   GtkDestroyNotify column_drop_func_data_destroy;
   GList *column_drag_info;
index ed0305d4b72aad33b99dc137da1a03a19c4ae4da..5725e95b42ed2e508aba08ce242fab2cb6265b2d 100644 (file)
@@ -61,6 +61,10 @@ EXTRA_OBJETCS = prop-editor.obj
 EXTRA_OBJETCS = prop-editor.obj
 !ENDIF
 
+!IFDEF EXTRA_testtext
+EXTRA_OBJETCS = prop-editor.obj
+!ENDIF
+
 $(TESTAPP).exe : ../gtk/gtk-win32-$(GTK_VER).dll $(TESTAPP).obj
        $(CC) $(CFLAGS) $(TESTAPP).obj $(EXTRA_OBJETCS) $(GTK_LIBS) $(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(GLIB_LIBS) $(LDFLAGS)
 
index c46eeb1ececc6e333927b9dae5b9630b59ca808d..be36c4e9d54b1ae64a5d4aa67159b6d027377f1e 100644 (file)
@@ -1,3 +1,4 @@
+#include <stdlib.h> /* putenv */
 #include "gtk/gtk.h"
 
 /* Target side drag signals */
index de257ade0ddf19847ffc99724a4ac243a16ca52e..a775eefd382686bf6d5d2ad6f51f28f8d6524978 100644 (file)
@@ -1,7 +1,13 @@
 #include <gtk/gtk.h>
+
+#if defined (GDK_WINDOWING_X11)
 #include "x11/gdkx.h"
+#elif defined (GDK_WINDOWING_WIN32)
+#include "win32/gdkwin32.h"
+#define GDK_WINDOW_XWINDOW(w) (guint)GDK_WINDOW_HWND(w)
+#endif
 
-#include <unistd.h>
+#include <string.h>
 #include <stdlib.h>
 #include <stdio.h>